Evolution is often characterized as a tinkerer creating efficient but messy solutions. We analyze the nature of the problems that arise when trying to explain and understand cognitive phenomena created by this haphazard design process. We present a theory of explanation and understanding and apply it to a case problem—solutions generated by genetic algorithms. By analyzing the nature of solutions that genetic algorithms present to computational problems, we show, first, that evolutionary designs are often hard to understand because they exhibit nonmodular functionality and, second, that breaches of modularity wreak havoc on our strategies of causal and constitutive explanation.